// 异步
//  可读性  代码的编写顺序和执行顺序一样就好了
//  代码能够暂停一下    async  await  函数中就可以
//  生成器函数 *func
function *foo(x) { // generator  * yield
    let y = 2 * (yield(x + 1)) // yield promise
    let z = yield(y / 3) // 13
    return ( x + y + z)
}

let it = foo(5); // 只返回一个迭代器  函数不准执行
console.log(it); // 迭代一次 
console.log(it.next()); // 手动让它迭代
console.log(it.next(12)); // 第一个 yield 值 12 
console.log(it.next(13));